<?php
/**
* @package   auto_occasion
* @subpackage marqueModele
* @author    your name
* @copyright 2011 your name
* @link      http://www.yourwebsite.undefined
* @license    All rights reserved
*/

class BoMarqueCtrl extends jController {

public $pluginParams = array(
                                    '*'=>array('auth.required'=>true,
                                    'jacl2.right'=>'admin.compte.gerer'
                                    )
                            );
    /**
    *Fonction pour afficher les listes de marques 
    */
    function index() {

        jClasses::inc("marqueModele~marqueSrv");
        jClasses::inc("commun~common");

        $toParams = array() ;
        $liste               = marqueSrv::getAllByOrder();
        $listeModel          = common::liste("ao_modele");
        $libelle = array();
        foreach($listeModel as $item){
             $libelle[] = $item->modele_libelle;
        }
        

        $imarqueId = $this->intParam('iId', 0) ; 
        $toParams['oMarque'] = ($imarqueId)? marqueSrv::getById($imarqueId) : common::init("ao_marque");
        $allMarque = ($imarqueId)?marqueSrv::getAllById($imarqueId): '' ;

        //on peut supprimer une marque seulement quand elle n'est pas utilisée par des annonces ou un essai !
        $estSupprimable = ($imarqueId) ? marqueSrv::estSupprimable($imarqueId) : false;

        $rep = $this->getResponse('html');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery-1.3.2.min.js');
		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.validation.js');

        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'] . 'design/back/js/jquery.autocomplete.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'] . 'design/back/js/localdata.js');

        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/css/jquery.autocomplete.css');
        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/css/thickbox.css');


        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.core.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.widget.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.mouse.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.sortable.js');
		

        $rep->menusActifs = adminHtmlResponse::MENU_MARQUE_MODELE ;


        $rep->body->assign('liste',$liste);
        $rep->body->assign('marque',$toParams['oMarque']);
        $rep->body->assign('id',$imarqueId);
        $rep->body->assign('libelle_modele', json_encode($libelle));
        $rep->body->assign('allMarque', $allMarque);
        $rep->body->assign('estSupprimable', $estSupprimable);

        $rep->bodyTpl = 'marqueModele~BoMarqueList';

        return $rep;

    }


    /**
    *Fonction pour réordonner les marques 
    */
    function reOrder() {
        
        jClasses::inc('marqueModele~marqueSrv') ;

        $postedParams = $this->params() ;

        $rep = $this->getResponse('text') ;
        $rep->content = marqueSrv::reOrder($postedParams) ;

        return $rep;
    }


    /**
    *Fonction pour réordonner les modèles
    */
    function reOrderModele() {
        
        jClasses::inc('marqueModele~modeleSrv') ;

        $postedParams = $this->params() ;

        $rep = $this->getResponse('text') ;
        $rep->content = modeleSrv::reOrder($postedParams) ;

        return $rep;
    }




   /**
     * sauvegarder une marque
     *
     *
     */
     function sauvegarder() {

        jClasses::inc("marqueModele~marqueSrv");
        jClasses::inc("marqueModele~modeleSrv");
        jClasses::inc("essais~essaisSrv");

        $toParams   = $this->params() ;

        $idMarque   = $this->intParam('marque_id', 0) ;
        $marqueName = $this->stringParam('marque_libelle', '') ;

        if ($marqueName) {
            // ajout ou update d'une marque
            $marque = marqueSrv::store($toParams) ;
            $idMarque = (isset($marque->marque_id) && $marque->marque_id) ? $marque->marque_id : $idMarque;

            //Liste des modèles venant du formulaire
            $modeleListe = modeleSrv::getModeleParams($toParams) ;


            if ($modeleListe){
                
                //Liste des modèles dèja enregistrés (ids and name)
                $modeleDejaEnBase = modeleSrv::getModeleDejaEnBase($modeleListe) ;
                // Récupération des nouveaux enregistrement seulement,  sans les anciens
                foreach ($modeleDejaEnBase as $item) {
                    foreach ($modeleListe as $k=>$itemModele) {
                         if ($itemModele == "'".$item->name."'") {
                             unset($modeleListe[$k]);
                         }

                    }
                }
                

                if ($idMarque ) {
                    // Suppression des enregistrement correspondants à l'id d'une marque ds a table ao_marque_modele
                    marqueSrv::removeMarqueModele($idMarque);
                }

               if ($modeleListe) {
                    //Ajout des nouveux modèles
                    if ($idMarque) modeleSrv::insertModele($modeleListe, $idMarque) ;

                   //Récupération Id de nouveaux modèles
                    $idModeleCreated = modeleSrv::getIdsModele(implode(",", $modeleListe)) ;
                }

                if($modeleDejaEnBase){
                   // Merge old and new Id for model
                        modeleSrv::insertMarqueModele($idMarque,$modeleDejaEnBase);
                        foreach($modeleDejaEnBase as $itemDejaEnBase ){
                            $idModeleCreated [] = $itemDejaEnBase->id;
                        }    
                }

                if($idModeleCreated){
                    //création repertoire  si n'existe pas et copie fichiers source dans ce répertoire créé
                    foreach($idModeleCreated as $item){
                    //    essaisSrv::getDirectory($idMarque, $item,'Modeles','__no__');
                    }
                }

            }// --- enf if modeleList
        }
        $rep = $this->getResponse('redirect') ;
        $rep->action = 'marqueModele~BoMarque:index' ;

        return $rep;
    }

    /**
     * Supprimer une marque / modele
     */
     function supprimer() {

        jClasses::inc("commun~common");

        $id                = $this->intParam ('id', 0);
        common::supprimer($id, 'ao_marque');
        $rep = $this->getResponse('redirect');
        $rep->action = 'marqueModele~BoMarque:index';
        return $rep;
    }

}

